Computer graphics and image processing techniques continually attempt to create photorealistic images. In many applications, these photorealistic images need to be rendered in real time. For example, animated characters in video games need to be rendered in real time. In order to achieve photorealistic images, mesostructures are applied to create the appearance of real-world materials and objects. Mesostructures are fine scale surface geometries. For example, different mesostructures may simulate wood, brick, or the like. Thus, when images are rendered with mesostructures applied, the objects obtain realistic surface details.
In overview, each object in an image may be represented as a set of polygonal or parameterized surfaces. This geometric model of the objects is commonly referred to as a macrostructure level. The mesostructure level is used to model details that are too small to be modeled efficiently by polygons. Several techniques have been developed over the past several years for real-time rendering of mesostructures. Each of these techniques faces the difficult tradeoff between the number of geometric primitives and the storage of pre-computed data.
For example, remeshing and slicing create a large amount of additional primitives over the original mesh (i.e., the macrostructure) in order to represent the detailed geometry (i.e., the mesostructure). These additional primitives add processing workload in a vertex engine and thus, hurt performance. Other techniques, such as bi-directional texture functions (BTF), view-dependent displacement mappings (VDM), and generalized displacement maps (GDM) use pre-computed high dimensional data calculated using a mesostructure sample. Because the data is pre-computed, the vertex engine does not suffer from additional processing workload and the rendering of the detailed geometry is accelerated in comparison to remeshing or slicing. However, the drawback of using pre-computed data is that the data consumes a significant amount of memory. Therefore, rendering techniques that use pre-computed data have difficulty in industrial applications where there is limited memory, such as for games and movies.
Thus, even with all the advances, there is a continual need to improve upon the surface detail rendering techniques for use in real-time applications.